"""
类名：OrderSettingService，继承于BaseService
实例属性：
    服务名称：service_name，赋值为'OrderSettingService'
实例方法：
    __init__(self)：需要先调用父类的__init__()，再添加实例属性
    def add(self, date_list):
        # 功能：添加预约设置
        # :param date_list:
        #     1.  日期列表，如：[{"orderDate":"2021-09-20 16:45:12","number":20}]
        #     2. 日期格式为："2021-09-20 16:45:12"，必须包括时分秒
        # :return: 设置成功返回True,  设置失败返回False
    def get_order_setting_by_month(self, date):
        # 功能：按月统计预约设置信息
        # :param date: 日期，如："2021-08"
        # :return: 列表，指定月份的预约信息
    def edit_number_by_date(self, info): 根据日期修改预约设置数量
        # 功能：根据日期修改预约设置数量
        # :param info:
        #     1. 预约设置的字典格式数据，参考接口文档填入字段数据
        #     2. 如：{"orderDate":"2021-09-19 17:45:12","number":15}
        #     3. 日期格式为："2021-09-19 17:45:12"，必须包括时分秒
        # :return: 修改成功返回True,  修改失败返回False
验证结果：
# 1. 实例化对象
# 2. 通过实例对象调用实例方法
# 2.1 添加预约设置
# 2.2 按月统计预约设置信息
# 2.3 根据日期修改预约设置数量
"""

import json
from base_service import BaseService


class OrderSettingService(BaseService):
    """预约设置服务类：继承于BaseService"""

    def __init__(self):
        # 调用父类的同名方法
        super().__init__()
        # 服务名称：service_name
        self.service_name = 'OrderSettingService'

    def add(self, date_list):
        """
        # 功能：添加预约设置
        # :param date_list:
        #     1.  日期列表，如：[{"orderDate":"2021-09-20 16:45:12","number":20}]
        #     2. 日期格式为："2021-09-20 16:45:12"，必须包括时分秒
        # :return: 设置成功返回True,  设置失败返回False
        """
        response = self.dubbo_client.invoke(self.service_name, "add", date_list)

        if response == 'null':
            return True
        else:
            return False

    def get_order_setting_by_month(self, date):
        """
        # 功能：按月统计预约设置信息
        # :param date: 日期，如："2021-08"
        # :return: 列表，指定月份的预约信息
        """
        response = self.dubbo_client.invoke(self.service_name, "getOrderSettingByMonth", date)

        # json.loads() json格式的字符串转换为Python的字典或列表
        return json.loads(response)

    def edit_number_by_date(self, info):
        """
        # 功能：根据日期修改预约设置数量
        # :param info:
        #     1. 预约设置的字典格式数据，参考接口文档填入字段数据
        #     2. 如：{"orderDate":"2021-09-19 17:45:12","number":15}
        #     3. 日期格式为："2021-09-19 17:45:12"，必须包括时分秒
        # :return: 修改成功返回True,  修改失败返回False
        """
        # info 增加 class对应的参数对象的类型
        info['class'] = 'com.itheima.pojo.OrderSetting'
        print('info = ', info)

        response = self.dubbo_client.invoke(self.service_name, "editNumberByDate", info)

        if response == 'null':
            return True
        else:
            return False


if __name__ == '__main__':
    # 1. 实例化对象
    order_service = OrderSettingService()
    # 2. 通过实例对象调用实例方法
    # 2.1 添加预约设置
    print('==========添加预约设置==========')
    # info = [{"orderDate": "2021-09-18 16:45:12", "number": 25}]
    # resp = order_service.add(info)
    # print('type(resp) =', type(resp))
    # print('resp = ', resp)
    # 2.2 按月统计预约设置信息
    print('==========按月统计预约设置信息==========')
    resp = order_service.get_order_setting_by_month("2021-09")
    print('type(resp) =', type(resp))
    print('resp = ', resp)
    print('==========根据日期修改预约设置数量==========')
    info = {"orderDate": "2021-09-19 17:45:12", "number": 15}
    resp = order_service.edit_number_by_date(info)
    print('type(resp) =', type(resp))
    print('resp = ', resp)
    print('==========按月统计预约设置信息==========')
    resp = order_service.get_order_setting_by_month("2021-09")
    print('type(resp) =', type(resp))
    print('resp = ', resp)
